// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Découvrez Amon Casino Online — Avis 2024 – Le Guide Ultime pour Joueurs Passionnés – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Découvrez Amon Casino Online — Avis 2024 – Le Guide Ultime pour Joueurs Passionnés

Découvrez Amon Casino, le casino en ligne qui révolutionne le divertissement virtuel. Avec une amon casino connexion simplifiée, profitez de l’expérience ultime de jeu en ligne. Amoncasino vous offre un accès rapide via amon casino login, garantissant une immersion instantanée dans un monde de divertissement sans pareil.

Ne manquez pas le amon casino bonus sans dépôt exclusif, une opportunité unique pour commencer votre aventure sans risque. Consultez les avis amon casino pour découvrir les retours d’expérience des joueurs satisfaits. Gérez facilement votre compte avec amon casino mon compte, et explorez toutes les fonctionnalités de amon casino en ligne.

Interface Utilisateur Intuitive

Le Amon Casino Online se distingue par son interface utilisateur intuitive, conçue pour offrir une expérience de jeu fluide et agréable. Que vous soyez un joueur novice ou expérimenté, l’accès à toutes les fonctionnalités est simplifié grâce à un design soigné et des menus clairs.

La amon casino connexion est rapide et sécurisée, vous permettant de vous connecter en quelques clics. Une fois connecté, vous accéderez à votre amon casino mon compte où vous pourrez gérer vos informations personnelles et vos transactions en toute simplicité.

Le casino amon en ligne offre également un amon casino login facile à retenir, garantissant une expérience utilisateur optimale. De plus, avec des options de navigation intuitives, vous pouvez explorer facilement les différentes sections du casino, des jeux de table aux machines à sous en passant par les paris sportifs.

Enfin, ne manquez pas les amon casino bonus sans dépôt qui vous attendent dès votre inscription. Ces offres exceptionnelles sont accessibles directement via l’interface utilisateur intuitive du Amon Casino, vous permettant de profiter de vos jeux préférés sans avoir à effectuer un dépôt initial.

En résumé, l’interface utilisateur du Amoncasino est conçue pour répondre à tous vos besoins, offrant une expérience de jeu sans faille et des fonctionnalités accessibles en un clin d’œil.

Offres de Bienvenue Généreuses

Bienvenue à Amon Casino Online, votre destination ultime pour des expériences de jeu en ligne inoubliables. Pour célébrer votre arrivée, nous vous offrons des offres de bienvenue généreuses qui vous permettront de commencer votre aventure avec un avantage significatif.

  • Amon Casino Bonus Sans Dépôt : Profitez d’un bonus sans dépôt exclusif pour explorer notre plateforme sans risque financier. C’est le moyen parfait de découvrir tout ce que Amon Casino a à offrir.
  • Amon Casino En Ligne : Accédez à notre casino en ligne depuis n’importe où et à tout moment. Notre interface conviviale vous permet de jouer à vos jeux préférés en toute simplicité.
  • Amon Casino Mon Compte : Gérez facilement votre compte Amon Casino. Consultez vos transactions, ajustez vos paramètres de sécurité et suivez vos gains en un seul endroit.
  • Amon Ra Casino : Plongez dans l’univers mystique d’Amon Ra Casino, où les jeux de chance rencontrent l’histoire ancienne. Découvrez des thèmes uniques et des expériences de jeu inédites.
  • Amoncasino : Rejoignez la communauté Amoncasino et profitez de promotions régulières, de tournois exclusifs et de récompenses pour les membres fidèles.
  • Amon Casino Login : Connectez-vous facilement à votre compte Amon Casino grâce à notre système de connexion sécurisé. Accédez rapidement à vos jeux préférés et commencez à jouer.
  • Amon Casino Connexion : Assurez-vous de rester connecté pour ne rien manquer des dernières offres et mises à jour de Amon Casino.
  • Casino Amon : Découvrez le casino Amon, où le divertissement et les gains sont au rendez-vous. Explorez notre large sélection de jeux et profitez de l’ambiance festive.

Ne manquez pas ces offres de bienvenue généreuses et commencez votre voyage au sein d’Amon Casino dès aujourd’hui!

Variété de Jeux de Casino

Amon Casino Online offre une vaste gamme de jeux de casino pour satisfaire tous les joueurs. Que vous soyez un amateur de machines à sous, de jeux de table ou de poker, Amon Casino a tout ce qu’il vous faut. Avec des titres exclusifs et des versions classiques, vous trouverez toujours quelque chose qui vous plaira.

Pour les nouveaux joueurs, Amon Casino propose un amon casino bonus sans dépôt pour vous aider à démarrer. Connectez-vous facilement avec amon casino connexion ou amon casino login et accédez à votre amon casino mon compte pour gérer vos jeux et vos gains.

Avec des avis positifs comme “Avis Amon Casino (2024)”, il est clair que Amon Casino en ligne est un choix de confiance. Que vous soyez sur mobile ou sur ordinateur, amon ra casino vous offre une expérience de jeu fluide et agréable. Essayez dès maintenant et découvrez pourquoi amoncasino est l’un des meilleurs casinos en ligne.

Sécurité et Confidentialité

Chez Amon Ra Casino, la sécurité et la confidentialité de nos joueurs sont notre priorité absolue. Nous utilisons les dernières technologies de cryptage pour garantir que toutes les transactions et informations personnelles sont protégées.

Mesure de Sécurité
Description

Cryptage SSL Toutes les données transmises entre votre navigateur et notre site sont cryptées via SSL, assurant une protection maximale. Système de Détection d’Intrusions Nous avons mis en place un système avancé de détection d’intrusions pour prévenir toute tentative de piratage. Politique de Confidentialité Notre politique de confidentialité garantit que vos informations personnelles ne seront jamais partagées avec des tiers sans votre consentement.

En choisissant Amon Casino en ligne, vous bénéficiez d’un environnement de jeu sécurisé et fiable. Profitez de nos bonus sans dépôt et de toutes les fonctionnalités de Amoncasino en toute tranquillité d’esprit.

Pour plus d’informations, consultez notre page de connexion ou accédez à votre compte via Amon Casino login. Rejoignez-nous dès maintenant et vivez une expérience de casino en ligne sans pareille avec Amon Casino mon compte.

Service Clientèle Exceptionnel

Chez Amon Casino, votre satisfaction est notre priorité absolue. Notre équipe de service clientèle est disponible 24/7 pour répondre à toutes vos questions et résoudre vos problèmes rapidement. Que vous ayez besoin d’aide pour votre amon casino login, des informations sur les amon casino bonus sans dépôt, ou simplement des conseils pour naviguer sur notre plateforme, nous sommes là pour vous.

Grâce à notre interface intuitive, vous pouvez facilement accéder à votre amon casino mon compte et gérer vos transactions en toute sécurité. Si vous rencontrez des difficultés, n’hésitez pas à utiliser notre amon casino connexion assistée par notre équipe dévouée.

Les avis amon casino témoignent de notre engagement envers un service clientèle de qualité supérieure. Rejoignez la communauté amoncasino et découvrez pourquoi nous sommes le choix numéro un pour les amateurs de jeux en ligne.

Profitez de l’expérience complète du amon casino en ligne avec un service clientèle qui vous accompagne à chaque étape.

Méthodes de Paiement Sécurisées

Chez Amon Casino Online, la sécurité de vos transactions est notre priorité absolue. Nous offrons une variété de méthodes de paiement sécurisées pour garantir que votre expérience d’amon casino connexion soit aussi fluide que possible.

  • Visa et Mastercard – Les cartes de crédit et de débit Visa et Mastercard sont acceptées pour vos dépôts et retraits rapides et sécurisés.
  • Cryptomonnaies – Profitez de la confidentialité et de la rapidité des paiements en utilisant des cryptomonnaies comme Bitcoin et Ethereum.
  • Portefeuilles électroniques – Skrill, Neteller, et d’autres portefeuilles électroniques sont disponibles pour une gestion facile de vos fonds.

Pour plus d’informations sur les méthodes de paiement, visitez notre page amon casino mon compte après votre amon casino login. N’oubliez pas que nous offrons également un amon casino bonus sans dépôt pour vous aider à démarrer votre aventure sur amoncasino.

Rejoignez-nous dès aujourd’hui et découvrez pourquoi Amon Casino en ligne est l’un des meilleurs choix pour les amateurs de jeux en ligne. Consultez également nos avis amon casino pour voir ce que nos joueurs pensent de notre plateforme.

Design and Develop by Ovatheme